class Solution {
public:
    int findMinArrowShots(vector<vector<int>>& p) {
        sort(p.begin(),p.end());
        int n=p.size();
        int left=p[0][0];
        int right=p[0][1];
        int ret=1;
        for(int i=0;i<n;++i)
        {
            if(right<p[i][0])
            {
                ret++;
                right=p[i][1];
            }
            else
            {
                left=max(left,p[i][0]);
                right=min(right,p[i][1]);
            }
        }
        return ret;
    }
};
